﻿using Ewell.Interface.Common.Model;
using Ewell.Interface.Common.Model.Constant;
using Ewell.Interface.Common.Model.GateWay.Dto.Dict;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Ewell.Interface.Common.Model.GateWay.GateWayUriInfo
{
    /// <summary>
    /// 接口管理服务
    /// </summary>
    public class InterfaceManagementDubboServe : GateWayUri
    {
        public override string url  => "dubbo/cc.ewell.his.dict.service.inter.dubbo.external.InterfaceManagementDubboServe";
        public GateWayMethod queryInterfaceConfigByExample => new QueryInterfaceConfigByExample(this.url);
        public GateWayMethod getTransactionIdByExample => new GetTransactionIdByExample(this.url);
        public GateWayMethod queryDataSelecteItemSettingByTransactionId => new QueryDataSelecteItemSettingByTransactionId(this.url);
        /// <summary>
        /// 【2-100157-01】根据事件标识查询监听事件的接口信息
        /// </summary>
        public GateWayMethod queryInterfaceByEventId => new QueryInterfaceByEventId(this.url);
    }
    /// <summary>
    /// 保存签到信息
    /// </summary>
    public class QueryInterfaceConfigByExample : GateWayMethod
    {
        public QueryInterfaceConfigByExample(string baseUrl) : base(baseUrl)
        {
        }
        public override string methodName => "queryInterfaceConfigByExample";
        public override string paramClass => "cc.ewell.his.dict.upon.req.InterfaceConfigQueryReq";

        public override DubboParamType paramType => DubboParamType.defaultParam;

        public override Type requestParamType => typeof(InterfaceConfigQueryReq);

        public override Type responseParamType => typeof(List<InterfaceXConfigResp>);
    }
    
    public class GetTransactionIdByExample : GateWayMethod
    {
        public GetTransactionIdByExample(string baseUrl) : base(baseUrl)
        {
        }
        public override string methodName => "getTransactionIdByExample";
        public override string paramClass => "cc.ewell.his.dict.service.inter.dubbo.external.upon.req.ExInterfaceTransactionDubboReq";

        public override DubboParamType paramType => DubboParamType.defaultParam;

        public override Type requestParamType => typeof(ExInterfaceTransactionDubboReq);

        public override Type responseParamType => typeof(List<ExInterfaceTransactionDubboResp>);
    }
    public class QueryDataSelecteItemSettingByTransactionId : GateWayMethod
    {
        public QueryDataSelecteItemSettingByTransactionId(string baseUrl) : base(baseUrl)
        {
        }
        public override string methodName => "queryDataSelecteItemSettingByTransactionId";
        public override string paramClass => "cc.ewell.his.dict.service.inter.dubbo.external.upon.req.TransactionDataSelectItemDubboReq";

        public override DubboParamType paramType => DubboParamType.defaultParam;

        public override Type requestParamType => typeof(TransactionDataSelectItemDubboReq);

        public override Type responseParamType => typeof(List<TransactionDataSelectItemDubboResp>);
    }

    public class QueryInterfaceByEventId : GateWayMethod
    {
        public QueryInterfaceByEventId(string baseUrl) : base(baseUrl)
        {
        }
        public override string methodName => "queryInterfaceByEventId";
        public override string paramClass => "cc.ewell.his.dict.upon.interfacemanage.QueryInterfaceByEventIdReq";

        public override DubboParamType paramType => DubboParamType.defaultParam;

        public override Type requestParamType => typeof(QueryInterfaceByEventIdReq);

        public override Type responseParamType => typeof(List<ExInterfaceResp>);

        public override string desc => "【2-100157-01】根据事件标识查询监听事件的接口信息";
    }
}
